package com.relytosoft.mizar.analyze.face.services.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.relytosoft.dubhe.common.core.base.page.PageQuery;
import com.relytosoft.mizar.analyze.base.entity.pojo.dto.TaskRequestDto;
import com.relytosoft.mizar.analyze.face.api.entity.AyFaceTask;
import com.relytosoft.mizar.analyze.face.api.entity.AyFaceTaskSon;
import com.relytosoft.mizar.analyze.face.api.pojo.dto.AyFaceTaskDto;
import com.relytosoft.mizar.analyze.face.api.pojo.dto.AyFaceTaskUpdateDto;
import com.relytosoft.mizar.analyze.face.api.pojo.dto.AyTaskIdDto;
import com.relytosoft.mizar.analyze.face.api.pojo.query.AyFaceTaskQuery;
import com.relytosoft.mizar.analyze.face.api.pojo.query.AyFaceTaskSearchQuery;
import com.relytosoft.mizar.analyze.face.api.pojo.vo.AyBatchVo;
import com.relytosoft.mizar.analyze.face.api.pojo.vo.AyFaceTaskVo;

import java.util.List;

/**
 * @author lj
 * @date 2022/5/16 11:33
 */
public interface AyFaceTaskService extends IService<AyFaceTask> {

    /**
     * 分页查询人脸分析主任务列表
     *
     * @param pageQuery
     * @param ayFaceTaskQuery
     * @return
     */
    IPage<AyFaceTaskVo> selectAyFaceTaskPageList(PageQuery pageQuery, AyFaceTaskQuery ayFaceTaskQuery);

    /**
     * 修改人脸分析主任务
     */
    boolean updateAyFaceTask(AyFaceTaskUpdateDto ayFaceTaskVo);


    /**
     * 添加主任务的同时添加子任务
     *
     * @param
     */
    List<TaskRequestDto> insertTaskWithSonWith(AyFaceTaskDto ayFaceTaskDto, AyFaceTask ayFaceTask);

    /**
     * 启动人脸分析任务
     *
     * @param
     */
    List<TaskRequestDto> startAyFaceTask(AyTaskIdDto ayAyTaskIdDto, AyFaceTask ayFaceTask, List<AyFaceTaskSon> ayFaceTaskSons);

    /**
     * 停止人脸分析任务
     *
     * @param
     */
    List<String> stopAyFaceTask(AyTaskIdDto ayAyTaskIdDto, AyFaceTask ayFaceTask, List<AyFaceTaskSon> ayFaceTaskSons);


    /**
     * 删除人脸分析任务
     *
     * @param
     */
    void deleteTaskWithSonWith(AyTaskIdDto ayTaskIdDto);


    /**
     * 人脸任务结果检索
     */
    JSONObject taskResultSearch(AyFaceTaskSearchQuery ayFaceTaskSearchQuery, PageQuery pageQuery);

    /**
     * 添加主任务通过dto
     *
     * @param ayFaceTaskDto
     * @return
     */
    AyBatchVo insertTaskByDto(AyFaceTaskDto ayFaceTaskDto);

    /**
     * 删除任务通过任务id集合
     *
     * @param ayTaskIdDto
     * @return
     */
    Boolean deleteTaskByIds(AyTaskIdDto ayTaskIdDto);

    /**
     * 批量开始任务
     *
     * @param ayTaskIdDto
     * @return
     */
    Boolean startTaskByIds(AyTaskIdDto ayTaskIdDto);

    /**
     * 批量结束任务
     *
     * @param ayTaskIdDto
     * @return
     */
    Boolean stopTaskByIds(AyTaskIdDto ayTaskIdDto);
}


